<?php

declare(strict_types=1);

namespace app\model\api\admin;

use think\Model;
use app\traits\DataScopeTrait;

class BaseAdmin extends Model
{
    use DataScopeTrait;

    // public bool $dataScopeOn = false; // 这里必须完全与trait一致,子类可以覆盖这个属性来控制是否启用数据权限

    public static function onBeforeInsert($model)
    {
        if ($model->dataScopeOn) {
            $request = request();
            $admin_auth = \app\library\api\admin\Auth::instance();

            // 自动生成 dept_id  只有在 $model->dept_id 不存在时才去获取部门信息
            if (!$model->dept_id) {
                $dept = $request->x_token_user['id'] ? $admin_auth->getDeptByUid($request->x_token_user['id']) : null;
                $model->dept_id = $dept ? $dept['id'] : 0;
            }

            // 自动生成 admin_id
            $model->admin_id = $model->admin_id ?? ($request->x_token_user['id'] ?? 0);
        }
    }
}